Kristaba Hors ligne Membre Niveau: Vétéran
Points: 583
Défis: 22 Email | Message
Posté le 09/09/2010 00:44
[Cherche volontaires] Reverse-engineering de la ROM des G85.:
Bonjour à tous les casiophiles casionautes!
Voilà, dans le cadre d'un projet dans lequel j'ai besoin d'utiliser des I/O de fichiers, je me suis rappelé qu'il y a déjà un bout de temps, j'avais envisagé de faire du reverse-engineering sur le système de fichier internes des G75-85(SD)-95.
Du coup je suis motivé pour au moins commencer à m'attaquer au problème : analyser des images de la ROM des calto pour repérer les adresses importantes, la structure du système de fichier, etc...
Seulement, voilà, j'ai besoin d'un grand échantillonnage pour pouvoir être assurer (statistiquement tout de moins ) de la véracité des infos que j'arrive à déduire.
En effet, certains paramètres pourraient faire varier la position et la structure des informations (version de l'OS, encombrement de la mémoire, modèle, etc...)!
Donc voilà : I need YOU! (tm)
J'explique le principe : j'ai fait un petit programme qui va dumper (copier byte-à-byte) votre mémoire (promis s'pas douloureux ).
Après l'avoir utilisé, il suffit de m'envoyer les fichiers qu'il a généré en indiquant les informations importantes (modèle de calto, version de l'OS, et si vous avez optimisé la mémoire juste avant ou non) et je pourrais analyser ça bien au chaud chez moi
Donc pour m'aider, il suffit :
1) D'avoir un modèle disposant d'une carte SD
2) D'en insérer une avec plus de 4.5Mio de libre
3) De télécharger le fichier joint, et de le lancer depuis la calto.
4) De me passer les fichiers ROM88.DMP et ROMA0.DMP
Voilà, bon j'ai pas besoin de 50 volontaires non plus, mais si quelques personnes pouvaient prendre le temps de faire ça ça m'aiderais vraiment
Pis ça vous prendra moins de temps que d'avoir lu la totalité de mon post en plus
Une bataille navale avec Intelligence Artificielle sur Graph 35? C'est ICI !
Projets en cours :
*CGUI++, Une GUI C++ multi-plateforme conçue pour fonctionner sur calculatrices.
*Tiles Creator, un environnement de création et gestion de ressources graphiques.
Gigaman Hors ligne Membre Niveau: Vétéran
Points: 801
Défis: 9 Email | Message
Gigaman : Bah, pas compliqué, tu compresses les deux fichiers (pour pas avoir à faire deux uploads), tu te rends sur http://www.megaupload.com , tu indiques le fichier à envoyer, une brève description, tu fais Envoyer et t'as plus qu'à me donner le lien qu'il affiche
Totoyo : Merci d'avance
Eiyeron : Nan, le fs des G100+ est probablement différent (sûrement du bête FAT 16), ce n'est pas ce qui m'intéresses
Ce n'est pas pour faire un émulateur, mais simplement pour comprendre comment est structuré le système de fichier des G85 & co, et éventuellement pour créer par la suite des fonctions de la lib standard C de manipulation des fichiers (car pour l'instant la manipulation de fichier se fait via les fonctions du SDK qui ne sont pas évidentes quand on est habitué à la lib standard ).
----------------------------------
Une bataille navale avec Intelligence Artificielle sur Graph 35? C'est ICI !
Projets en cours :
*CGUI++, Une GUI C++ multi-plateforme conçue pour fonctionner sur calculatrices.
*Tiles Creator, un environnement de création et gestion de ressources graphiques.
Gigaman Hors ligne Membre Niveau: Vétéran
Points: 801
Défis: 9 Email | Message
Merci beaucoup Gigaman
Grace à tes fichiers j'ai pû vérifier un grand nombre de chose dont je n'étais pas sûr qu'elles étaient similaires entre les différents OS
Donc j'y ai passé 3 grosses soirées, et pas mal réfléchi à ça en cours (faut bien que ça serve le bahut quoi ), j'avoue que j'ai largement dépassé mes espérances de départ
J'ai compris pratiquement tout le File System (FS) Casio (il me manque quelques octets que je n'ai pas observé varier, mais si je récupère quelques autres dump je pense que je pourrais m'en sortir )!
En tous cas je parviens à retrouver le nom, les différents fragments, leur taille respective, leur adresse dans la ROM, l'ID interne du fichier, si ils ont étés supprimés ou non, reconnaître les répertoires, trouver le répertoire parent d'un fichier ou d'un répertoire, et j'ai à peu près compris le système de "pagination" (si on peu appeler ça comme ça) du FS.
Bref, je pensais pas aller aussi vite, j'ai même eu le temps ce soir de faire une première application de lecture de l'index des fichiers (nom, taille, etc...) en utilisant les flèches gauche/droite pour changer de fichier !
Je met ça en fichier joint, au cas où quelqu'un ait l'envie de le tester ou de regarder les sources
J'ai aussi mis un petit fichier texte qui m'a permis de prendre quelques notes lors de mon analyse de la ROM (le fichier est loin d'être complet, mais il y a quelques éléments de doc dedans), en attendant de faire un fichier de documentation exhaustive, un de ces jours peut-être
Voilà, même si le but final est encore loin, je suis très confiant au niveau de la lecture au moins, et si quelques uns d'entre vous ont le temps de tester ce petit programme pour vérifier qu'il fonctionne correctement et/ou de m'envoyer des dump pour que je regarde ça, ça m'aiderait vraiment dans ma tâche
Sur ce, bonne journée à tous
----------------------------------
Une bataille navale avec Intelligence Artificielle sur Graph 35? C'est ICI !
Projets en cours :
*CGUI++, Une GUI C++ multi-plateforme conçue pour fonctionner sur calculatrices.
*Tiles Creator, un environnement de création et gestion de ressources graphiques.
Gigaman Hors ligne Membre Niveau: Vétéran
Points: 801
Défis: 9 Email | Message
le programme de lecture est très intéressant, il affiche les add ins ajoutés mais aussi ceux supprimés ainsi que les programmes basic supprimés, ceux ci sont stockés dans [del] [root]
byzarrement, les programmes basic non supprimés ne sont pas visibles, je pense qu'ils passent sur la mémoire de stockage quand on les supprime.
ton petit addin ne permet que de voir les fichiers de la mémoire de stockage.
pour les enlever définitivement il suffit de l'optimiser
mais bon, si tu arrives à les lire, tu dois pouvoir être capable de les restaurer !
ce serait une idée de programme intéressante, il m'est déjà arrivé de supprimer des programmes sans le vouloir, et de ne pas les avoir sauvegardés ailleurs et ça c'est pas cool
j'ai hate de voir la suite, tiens nous au courant si tu as du nouveau
----------------------------------
Time to wake up
Kristaba Hors ligne Membre Niveau: Vétéran
Points: 583
Défis: 22 Email | Message
Donc pour les programmes Basic, ils ne sont pas sur la mémoire de stockage, ils sont sur la RAM (et là c'est encore un autre système de fichiers qui est en place, donc cet add-in ne peut pas les voir).
Par contre les .G1M peuvent être stockés à un moment sur la SMEM, ce qui explique que tu les vois
Dans ce système de fichiers, un fichier supprimé est simplement "marqué" supprimé tant que la mémoire n'a pas été optimisée (sont index et ses données sont intactes jusqu'à ce moment), donc en effet, faire un add-in de restauration devrait être assez simple.
Ceci dit, j'ai regardé pas mal de chose et je pense que c'est simplement dû au fait que chez Casio ils sont pas très doués, par ce que rien n'empêche de réécrire par dessus sans pour autant avoir besoin de tout réécrire -_-'
Surtout qu'on attend pas, et en particulier sur une calto, d'avoir des écritures de fichier très rapide, donc quelques ms de plus pour "optimiser" en live à chaque écriture serait le petit geste qui ne coûte rien mais qui rendrait un brin plus propre le système.
Bref, toujours hallucinant de voir qu'ils sont pas foutus d'utiliser correctement leurs propres normes, sérieux...
Bon, les infos du moment : je suis entrain de voir ce que prévoit la norme C99 pour les flux et les fichiers (stdio.h). Je voulais avoir la norme C89, qui semble moins contraignante et plus simple à implémenter, mais impossible de mettre la main sur le document sans payer plusieurs centaines d'euro... Moi qui pensais que l'ANSI mettait gratuitement les standards en ligne xD
Bref, je commence à avoir une bonne idée du travail à faire, même si devoir prévoir différents FS (celui de Casio pour la mémoire de stockage et dans un futur hypothétique le FAT16 pour la carte SD) est un peu chiant à mettre en place, pour l'instant tout va bien
----------------------------------
Une bataille navale avec Intelligence Artificielle sur Graph 35? C'est ICI !
Projets en cours :
*CGUI++, Une GUI C++ multi-plateforme conçue pour fonctionner sur calculatrices.
*Tiles Creator, un environnement de création et gestion de ressources graphiques.
Ttp Hors ligne Membre Niveau: Débutant
Points: 670
Défis: 18 Email | Message
Planète-Casio est un site communautaire indépendant et n'est donc pas affilié à Casio | Toute reproduction de Planète-Casio, même partielle, est interdite
Les fichiers, programmes et publications postés sur Planète-Casio restent la propriété de leurs auteurs respectifs et peuvent être soumis à des copyrights
Merci de respecter le travail des autres ! | CASIO est une marque déposée par CASIO Computer Co., Ltd